home *** CD-ROM | disk | FTP | other *** search
- 3rd August 1992
- -----------------------------------------------------------------------------
- Support Group Application Note
- Number: 036
- Issue: 4
- Author:
- -----------------------------------------------------------------------------
-
- Master 128 Welcome Disc"Converter" Program
-
- -----------------------------------------------------------------------------
- Applicable Hardware: BBC Master 128
-
- Related Application Notes:
-
-
- -----------------------------------------------------------------------------
- Copyright (C) Acorn Computers Limited 1992
-
- Every effort has been made to ensure that the information in this leaflet is
- true and correct at the time of printing. However, the products described in
- this leaflet are subject to continuous development and improvements and
- Acorn Computers Limited reserves the right to change its specifications at
- any time. Acorn Computers Limited cannot accept liability for any loss or
- damage arising from the use of any information or particulars in this
- leaflet. ACORN, ECONET and ARCHIMEDES are trademarks of Acorn Computers
- Limited.
- -----------------------------------------------------------------------------
- Support Group
- Acorn Computers Limited
- Acorn House
- Vision Park
- Histon
- Cambridge CB4 4AE
- -----------------------------------------------------------------------------
-
-
- Some commercial software written for the BBC Model B or B+ may not work on
- the Master Series computers because of minor changes in the specification of
- the machine or because the software is badly written. This program attempts
- to provide an environment more similar to the Model B computer in order to
- overcome some of these problems.
-
-
- The changes provided are as follows:
-
- a) Forcing OSHWM to &1900 (some programs assume that PAGE will be at least
- this high).
-
- b) Setting MODE 7 (some programs assume this).
-
- c) A simulation of FX20 is provided. On issuing this command characters
- 32-126 (&20-&7E) are reset to their normal patterns, read from 'ROM'
- (actually the MOS's private RAM). All other characters are undefined.
-
- In the default state (FX20,0), any attempt to define a character will copy
- the corresponding bank of 32 characters into page &C00 and then define the
- character, so a maximum of 32 soft characters are available.
-
- In FX20,1 state OSHWM is moved up by 1page, and this page is used for
- characters &10-&BF; all other characters when defined will be put in page
- &C00.
-
- In FX20,2 state OSHWM is moved up by 2 pages:
- the 1st page is used for characters &A0-&BF;
- the 2nd page is used for character &C0-&DF.
- All other characters use page &C00.
-
- In FX20,3 state OSHWM is moved up by 3 pages:
- the 1st page is used for characters &A0-&BF;
- the 2nd page is used for characters &C0-&DF;
- the 3rd page is used for characters &E0-&FF.
- All other characters use page &C00.
-
- In FX20,4 state OSHWM is moved up by 4 pages:
- the 1st page is used for characters &A0-&BF;
- the 2nd page is used for characters &C0-&DF;
- the 3rd page is used for characters &E0-&FF;
- the 4th page is used for characters &20-&3F.
- All other characters use page &C00.
-
- In FX20,5 state OSHWM us moved up by 5 pages:
- the 1st page is used for characters &A0-&BF;
- the 2nd page is used for characters &C0-&DF;
- the 3rd page is used for characters &E0-&FF;
- the 4th page is used for characters &20-&3F;
- the 5th page is used for characters &40-&5F.
- All other characters use page &C00.
-
- In FX20, <6-255> state OSHWM is moved up by 6 pages:
- the 1st page is used for characters &A0-&BF;
- the 2nd page is used for characters &C0-&DF;
- the 3rd page is used for characters &E0-&FF;
- the 4th page is used for characters &20-&3F;
- the 5th page is used for characters &40-&5F;
- the 6th page is used for characters &60-&7F.
- Characters &80-&9F use page &C00.
-
- d) Some programs attempt to define soft characters by putting data in page
- &C00 (or above OSHWM is FX20,n has been issued).
-
- The converter attempts to overcome this by looking at the font flags byte
- every time a character is printed. If this indicates that the character is
- stored in 'RAM', then the 8 bytes corresponding to that character are copied
- over to the MOS's character workspace, where the real soft characters are
- stored. In addition, when a character is defined, the bytes are put in the
- page specified by the font page locations, as well as being passed to the
- MOS for storage in its workspace.
-
- e) Some programs use the abbreviation '*D.' for '*DISC', '*CO.' for
- '*CODE', or '*LI' for '*LINE'. Using abbreviations in commercial software
- is normally considered bad practice, as paged ROMs in higher priority
- sockets may interpret the command as one of theirs (eg *DISARM). In this
- case the command '*DUMP", '*CONFIGURE' and '*LIST' have been added to the
- operating system and the above abbreviations are mis-interpreted as these.
- The converter intercepts the command line interpreter and converts any
- abbreviation of these commands to the full command.
-
- f) On the BBC Model B, OSBYTE 179 is defined to read the primary OSHWM, ie
- the value OSHWM would be if no pages were reserved for soft characters. On
- the Master Series, this call has been reused because soft characters do not
- move OSHWM up. The converter sets up this call to return &1900. The
- converter also sets up the normal OSHWM value to <primary HWM>+<FX20 state>.
-
- g) Some programs check the value of INKEY(-256) (or the equivalent OSBYTE)
- in order to prevent the software running on inappropriate machines (eg
- Electrons). The converter makes this call return -1, ie the value returned
- by OS 1.20.
-
- h) On the first release of the system, the 1770 DFS (version 2.20) does not
- return a value of 1 in the accumulator on return from a successful OSFILE
- load (ie OSFILE entered with A=&FF). The converter intercepts OSFILE if the
- DFS is the current filing system, and sets A to 1 on exit from this call
- (1770 DFS version 2.24 correctly returns A=1).
-
- i) On OS 1.20 locations &E0, &E1 pointed to a 640 x multiplication table in
- the MOS RAM. Some applications software needs a table of this kind for its
- own VDU handling routines, and assumes that these locations point there. On
- the Master Series no table of that form exists, and locations &E0, &E1 are
- used for other purposes. The converter provides its own multiplication
- table, and on exit from every OSWRCH call points locations &E0, &E1 to it.
-
- j) Some programs assume that the soft key buffer is at &B00, and load soft
- key definitions directly there. The converter intercepts OSRDCH and INKEY,
- to checksum page &B00 and if it has changed since the last time, sets up
- real soft key definitions corresponding to the contents of page &B00. Note
- that if ANFS is present, programs that poke page &B00 may interfere with
- network operations.
-
- k) Some programs write directly to locations &367-&36E, which on OS 1.20
- contain the font ROM/RAM flags, and the font page locations. The programs
- do this so they can store soft characters in other pages, eg pages &900,
- &A00. On the Master Series all fonts are stored in the MOS's private RAM,
- so these locations have been reused.
-
- The converter sets up these locations as they would be on a Model B, having
- preserved their original values elsewhere. Then on entry to OSWRCH it
- refers to these locations to see if the character being printed is stored in
- 'RAM', and if so, copies the 8 bytes for that character into the MOS's soft
- character workspace. Then before calling OSWRCH it copies the locations
- away, restoring the old values for the duration of the call before swapping
- them back on exit! l) On OS 1.20, the TAB(X,Y) vdu sequence has no effect
- while in VDU 5 mode. On the Master Series this command has now been
- implemented in this mode, to move the graphics cursor accordingly.
- Unfortunately, some software 'accidentally' issues this sequence while in
- VDU 5 mode and relies on it not having any effect. The converter intercepts
- this sequence an suppresses it when in VDU 5 mode.
-
- m) Some programs simulate a reset by calling the reset vector and assume
- that the disc filing system will be selected. On the Master Series the
- filing system is normally preserved over BREAK. The converter issues a
- '*DISC' command on every reset. This can still be overridden by holding
- down a key which is recognised by a filing system, eg the space bar selects
- the cassette filing system.
-
- n) Some software uses the *TYPE command (resident in the DFS on Model Bs)
- to send VDU sequences to the screen (even though this version of *TYPE calls
- OSACSI, which messes up sequences containing character 13). On the Master
- Series, the MOS provides a *TYPE command which converts control codes into
- GSREAD format (eg |L for character 12), and also allows for the termination
- of lines by CR, LF, CRLF or LFCR.
-
- The converter provides its own *TYPE command which more closely resembles
- the one in DFS 1.20.
-
-
- How it works
-
- The converter program resides in a bank of sideways RAM. On the reset
- service call (&27), code is copied to &DD00 in the filing system RAM and the
- OSCLI, OSBYTE, OSWRCH and OSRDCH vectors are pointed into this code. On the
- vectors claimed call (&0F) the OSFILE vector is intercepted if the new
- filing system is the 1770 DFS.
-
- Note that because the vectors point into the filing system RAM, a program
- which calls OSBYTE from an event routine which is entered during an OSWRCH
- call will probably crash the machine, because he filing system RAM will not
- be paged in at that time.
-
-
- How to load the converter
-
- <Cassette>
- To install the converter program, wind the Welcome cassette to the
- appropriate place, and type CHAIN "CONVERT" then follow the
- instructions.
-
- <Disc>
- To install the converter program, mount the Welcome disc and type
- CHAIN "CONVERT"
- then follow the instructions.
-
- The converter will remain installed until you switch off the computer or you
- load another image into sideways bank 4.
-